﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WF_QLThuVien.BusinessLayer.PhieuMuon;
using WF_QLThuVien.BusinessLayer.DauSach;
using WF_QLThuVien.Entities.PhieuMuon;
using WF_QLThuVien.BusinessLayer;
using WF_QLThuVien.Entities.Sach;
using WF_QLThuVien.BusinessLayer.QuyDinh;
using WF_QLThuVien.Entities.QuyDinh;
using WF_QLThuVien.Entities;

namespace WF_QLThuVien.PresentationLayer
{
    public partial class Form3TacVu : Form
    {
        #region: PANDA. Khai báo biến
        CDocGiaBLL GDocGiaBLL = new CDocGiaBLL();
        CBLL_DauSach GDauSachBLL = new CBLL_DauSach();
        CPhieuMuonBLL GPhieuMuonBLL = new CPhieuMuonBLL();
        CCTPhieuMuonBLL GCTPhieuMuonBLL = new CCTPhieuMuonBLL();
        List<CCTPhieuMuon> arrCTPM = new List<CCTPhieuMuon>();
        #endregion

        public delegate void UpdateClickPM();
        public event UpdateClickPM UpdateData_Click;

        private string m_traSach = "";
        private string m_giaHan = "";

        CQuyDinh GQuyDinh;
        CBLL_QuyDinh GQuyDinhBLL = new CBLL_QuyDinh();

        public Form3TacVu()
        {
            InitializeComponent();
            GQuyDinh = GQuyDinhBLL.GetQuyDinh();
        }

        public Form3TacVu(string giaHan, string traSach)
        {
            InitializeComponent();
            m_traSach = traSach;
            m_giaHan = giaHan;
            GQuyDinh = GQuyDinhBLL.GetQuyDinh();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void Form3TacVu_Load(object sender, EventArgs e)
        {
            btnOk.Enabled = false;
        }

        private void txtMaDocGia_TextChanged(object sender, EventArgs e)
        {
            if (txtMaDocGia.Text.Length > 0)
            {
                btnOk.Enabled = true;
            }
            else
            {
                btnOk.Enabled = false;
            }
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            #region: Gia Hạn
            if (m_giaHan != "")
            {
                #region: Kiểm Tra Mã Đọc Giả
                string maDocGia=txtMaDocGia.Text;
                CDocGia dg = new CDocGia();
                dg = GDocGiaBLL.timMaDocGia(maDocGia);
                if (dg.DocGiaID == "")
                {
                    MessageBox.Show("Nhập Sai Mã Đọc Giả");
                    txtMaDocGia.Text = "";
                    return;
                }
                #endregion

                #region: Kiểm Tra Mã Sách
                string maSach = txtMaSach.Text;
                if (maSach == "")
                {
                    MessageBox.Show("Nhập Mã Sách Cần Gia Hạn");
                    return;
                }
                CSach s = GDauSachBLL.timSachByMaSach(maSach);
                if (s.SachID == "")
                {
                    MessageBox.Show("Nhập Sai Mã Sách - Không Tìm Thấy");
                    txtMaSach.Text = "";
                    return;
                }
                if (s.TrangThai.ToString().Equals(@"Duoc muon"))
                {
                    MessageBox.Show("Sách Không Thể Gia Hạn Vì Trạng Thái Là:" + s.TrangThai.ToString());
                    return;
                }
                #endregion

                #region: Kiểm Tra Số Lần Gia Hạn Tối Đa
                int soLan = GCTPhieuMuonBLL.SoLanGiaHan(maSach);
                if (soLan >= GQuyDinh.SoLanGiaHan)
                {
                    MessageBox.Show("Đã Gia Hạn Tối Đa Theo Quy Định");
                    this.Dispose();
                    return;
                }
                #endregion

                #region: Update Thông Tin Sách
                if (s.TrangThai.ToString().Equals(@"Dang muon"))
                {
                    //Update Số lần gia hạn của CTPM
                    if (GCTPhieuMuonBLL.updateSoLanGiaHan(maSach))
                    {
                        this.Dispose();
                    }
                }
                else
                {
                    MessageBox.Show("Không Thể Gia Hạn Vì Trạng Thái Là:  " + s.TrangThai.ToString());
                }
                #endregion
            }
            #endregion

            #region: Trả Sách
            
            if (m_traSach != "")
            {
                #region: Kiểm Tra Mã Đọc Giả
                string maDocGia = txtMaDocGia.Text;
                CDocGia dg = new CDocGia();
                dg = GDocGiaBLL.timMaDocGia(maDocGia);
                if (dg.DocGiaID == "")
                {
                    MessageBox.Show("Nhập Sai Mã Đọc Giả");
                    txtMaDocGia.Text = "";
                    return;
                }
                #endregion

                #region: Kiểm Tra Sách Nhập
                string maSach = txtMaSach.Text;
                //string ghiChu = txtGhiChu.Text;
                if (maSach == "")
                {
                    MessageBox.Show("Nhập mã Sách cần Trả!");
                    return;
                }
                CSach s = GDauSachBLL.timSachByMaSach(maSach);
                if (s.SachID == "")
                {
                    MessageBox.Show("Không Tìm Thấy Sách");
                    return;
                }
                #endregion

                #region: UPDATE Trạng Thái
                if (s.TrangThai.ToString().Equals(@"Dang muon"))
                {
                    //Update trạng thái Sách thành "Duoc muon"
                    if (GDauSachBLL.UpdateTTTraSach(maSach))
                    {
                        //Chưa Tính Tiền Nếu Quá Hạn
                        this.Dispose();
                    }
                }
                else
                {
                    MessageBox.Show("Không Thể Trả Sách Vì Trạng Thái Là:  " + s.TrangThai.ToString());
                }
                #endregion
            }
            #endregion

            #region: Delegate
            UpdateData_Click();
            #endregion
        }
    }
}
